/*
 * snmp_oid_data.cpp
 *
 *  Created on: 2017-1-20
 *      Author: root
 */
#include"snmp_oid.h"
#include"snmp_asn.h"
#include<string.h>
#include<stdint.h>
#include<stdio.h>
#include<stdlib.h>
#include"PublicTool.h"
#include"PublicLog.h"
void MakeSnmpOid(char*buff,uint32_t*oidName,int oidLen);
const char*ReadSnmpDataInfo(const char*Pos,int len,u_char DataType,SnmpDataInfo*DataInfo){
    DataInfo->valType=DataType;
    if(DataType==ASN_INTEGER||DataType==ASN_GAUGE){
		int32_t integer=0;
		Pos=ReadAsnIntData(Pos,len,DataType,integer);
		DataInfo->value.vali32=integer;
		sprintf(DataInfo->data,"%d",integer);
    }else
    if(DataType==ASN_TIMETICKS){
		int32_t timeticks=0;
		Pos=ReadAsnIntData(Pos,len,DataType,timeticks);
		DataInfo->value.valu32=(uint32_t)timeticks;
		sprintf(DataInfo->data,"%d",timeticks);
    }else
    if(DataType==ASN_OBJECT_ID){
		uint32_t oidName[MAX_OID_LEN]={0};//OID
		int      oidLen=0;//长度
		Pos=ReadAsnObjectIDData(Pos,len,oidName,oidLen);
		MakeSnmpOid(DataInfo->data,oidName,oidLen);
    }else
    if(DataType==ASN_OCTET_STR){
		int datalen=0;
		Pos=ReadAsnLengthData(Pos,len,DataType,datalen);
		DataInfo->valLen=datalen;
		memcpy(DataInfo->data,Pos,datalen);
		Pos+=datalen;
    }else{
		int datalen=0;
		Pos=ReadAsnLengthData(Pos,len,DataType,datalen);
		DEBUG("未处理数据类型:0x%x 数据长度:%d",DataType,datalen);
		Pos+=datalen;
    }
    return Pos;
}
